// import axios from 'axios'
// import qs from 'qs'
//
// let http = axios.create({
//   // 跟路径
//   baseURL: 'http://localhost:7001',
//   method: 'POST',
//   // 携带凭证
//   withCredentials: true,
// })
//
// // 请求拦截器
// http.interceptors.request.use(requestConfig => {
//   /*
//   * 前端post请求：
//   * 1.form表单：Content-Type：application/x-www-form-urlencoded，id=1&name=zhangsan;后端直接接收参数 test(Integer rid)
//   * 2.axios异步请求：Content-Type：application/json，{id:1,name:zhangsan};后端需要接收json test(@RequestBody Integer rid)
//   * */
//   if (requestConfig.method == 'post') {
//     // 设置请求头：form表单的格式
//     requestConfig.headers['Content-Type'] = "application/x-www-form-urlencoded"
//     // 修改参数格式
//     requestConfig.data = qs.stringify(requestConfig.data)
//   }
//   return requestConfig
// })
//
// // 拦截响应
// http.interceptors.response.use(response => {
//   // console.log(response);
//   return response.data
// })
//
// export default http


import axios from 'axios'
import qs from 'qs'
import store from "./store";

let http = axios.create({
  baseURL: 'http://localhost:7000/bookService',
  method: 'POST',
  //携带凭证
  withCredentials: true

})

//请求拦截器
http.interceptors.request.use(requestConfig => {

  if (requestConfig.method == 'post') {
    requestConfig.headers['Context-Type'] = "application/x-www-form-urlencoded"
    requestConfig.data = qs.stringify(requestConfig.data);

  }
  //获取token数据
  let token = sessionStorage.getItem("token")
  console.log(token)
  if (token != null) {
    token = qs.parse(token);
    requestConfig.headers = {
      'Content-Type': "application/x-www-form-urlencoded",
      'Authorization': token.token_type + ' ' + token.access_token
    }
  }
  return requestConfig
})


//拦截然后响应

http.interceptors.response.use(response => {
  console.log(response.data)
  return response.data
},error => {
  console.log("报错信息1："+error.response.data.error_description)
  let response=error.response
  //判断是令牌过期
  if (response.status == 401 && response.data.error_description.startsWith('Access token expired')){
    console.log("token过期")
    let data=qs.parse(sessionStorage.getItem("token"));
    console.log("哈哈哈"+store.state.client.client_id)
    //进入接口，用刷新码,获取新的token
    let responseResult=http.post("http://localhost:7000/authserver/oauth/token",{
      grant_type: 'refresh_token',
      client_id: store.state.client.client_id,
      client_secret: store.state.client.client_secret,
      refresh_token: data.refresh_token
    }).then(data=>{
      console.log("11111111"+data)
      //把值更新
      sessionStorage.setItem("token",qs.stringify(data.data))
      return error.config
    }).then(config=>{
      //重新发送请求
      return http(config)
    })
    return responseResult
  }
  return Promise.reject(error)
})

export default http


// import axios from 'axios'
// import qs from 'qs'
// import store from "./store";
// import {data} from "autoprefixer";
// import {config} from "shelljs";
// import {promise} from "ora";
// import da from "element-ui/src/locale/lang/da";
//
// let http = axios.create({
//   baseURL: 'http://localhost:7000/bookService',
//   method: 'POST',
//   //携带凭证
//   withCredentials: true
//
// })
//
// //请求拦截器
// http.interceptors.request.use(requestConfig => {
//
//   if (requestConfig.method == 'post') {
//     requestConfig.headers['Context-Type'] = "application/x-www-form-urlencoded"
//     requestConfig.data = qs.stringify(requestConfig.data);
//   }
//   //获取token数据
//   let token = sessionStorage.getItem("token")
//   if (token != null) {
//     token = qs.parse(token);
//     requestConfig.headers = {
//       'Content-Type': "application/x-www-form-urlencoded",
//       'Authorization': token.token_type + ' ' + token.access_token
//     }
//   }
//   return requestConfig
//
// })
//
//
// //拦截然后响应
//
// http.interceptors.response.use(response => {
//   let data = response.data
//   let code = data.code;
//   //判断是令牌过期
//   if (code==204){
//     console.log("token过期")
//     let data=qs.parse(sessionStorage.getItem("token"));
//     //进入接口，用刷新码,获取新的token
//     let responseResult=http.post("http://localhost:7000/authserver/oauth/token",{
//       grant_type: 'refresh_token',
//       client_id: store.state.client.client_id,
//       client_secret: store.state.client.client_secret,
//       refresh_token: data.refresh_token
//     }).then(data=>{
//       //把值更新
//       sessionStorage.setItem("token",qs.stringify(data))
//       return error.config
//     }).then(config=>{
//       //重新发送请求
//       return http(config)
//     })
//     return responseResult
//   }
//   return response.data
// },error => {
//   return Promise.reject(error)
// })
//
// export default http
